//#include <iostream>
//#include <string>
//#include <math.h>
//#include <unordered_map>
//using namespace std;
//bool prim(int n)
//{
//    if (n == 0 || n == 1) {
//        return false;
//    }
//    for (int i = 2; i <= sqrt(n); i++)
//    {
//        if (n % i == 0) {
//            return false;
//        }
//    }
//    return true;
//}
//int main() {
//    string s;
//    cin >> s;
//    unordered_map<char, int> mp;
//    char ma = s[0];
//    char mi = s[0];
//    mp[s[0]]++;
//    for (int i = 1; i < s.size(); i++)
//    {
//        mp[s[i]]++;
//        if (mp[s[i]] > mp[ma]) {
//            ma = s[i];
//        }
//        if (mp[s[i]] < mp[mi]) {
//            mi = s[i];
//        }
//    }
//    int maxn = mp[ma];
//    int minn = mp[mi];
//    maxn -= minn;
//    if (prim(maxn)) {
//        cout << "Lucky Word" << endl;
//        cout << maxn;
//    }
//    else {
//        cout << "No Answer" << endl;
//        cout << 0;
//    }
//    return 0;
//}


//#include <iostream>
//#include <algorithm>
//#include <string>
//#include <math.h>
//#include <vector>
//#include <unordered_map>
//using namespace std;
//bool prim(int n)
//{
//    if (n == 0 || n == 1) {
//        return false;
//    }
//    for (int i = 2; i <= sqrt(n); i++)
//    {
//        if (n % i == 0) {
//            return false;
//        }
//    }
//    return true;
//}
//struct cmp {
//    bool operator()(const pair<char, int>& a, const pair<char, int>& b) {
//        return a.second < b.second;
//    }
//};
//int main() {
//    string s;
//    cin >> s;
//    unordered_map<char, int> mp;
//    for (int i = 0; i < s.size(); i++)
//    {
//        mp[s[i]]++;
//    }
//    vector<pair<char, int>> vc(mp.begin(), mp.end());
//    sort(vc.begin(), vc.end(), cmp());
//    int nn = (*(vc.end()-1)).second - (*vc.begin()).second;
//    if (prim(nn)) {
//        cout << "Lucky Word" << endl;
//        cout << nn;
//    }
//    else {
//        cout << "No Answer" << endl;
//        cout << 0;
//    }
//    return 0;
//}


//class Solution {
//public:
//    /**
//     * 代码中的类名、方法名、参数名已经指定，请勿修改，直接返回方法规定的值即可
//     *
//     *
//     * @param schedule int整型vector<vector<>>
//     * @return bool布尔型
//     */
//    struct compare {
//        bool operator()(const pair<int, int>& a, const pair<int, int>& b) {
//            return a.first < b.first;
//        }
//    };
//    bool hostschedule(vector<vector<int> >& schedule) {
//        // write code here
//        vector<pair<int, int>> vc(schedule.size() + 1);
//        for (int i = 0; i < schedule.size(); i++)
//        {
//            pair<int, int> pii;
//            pii.first = schedule[i][0];
//            pii.second = schedule[i][1];
//            vc.push_back(pii);
//        }
//        sort(vc.begin(), vc.end(), compare());
//        int start = vc[0].first;
//        int end = vc[0].second;
//        for (int i = 1; i < vc.size(); i++)
//        {
//            if (vc[i].first < end) {
//                return false;
//            }
//            else {
//                end = vc[i].second;
//            }
//        }
//        return true;
//    }
//};


// #include <iostream>
// #include <algorithm>
// #include <vector>
// #include <cstring>
// using namespace std;
// vector<int> vc(520);
// int n;
// int sum=0;
// int su = 0;
// bool vis[520];
// bool viss;
// void dfs(int u)
// {
//     if(su==(sum/2)){
//         viss = true;
//         return;
//     }
//     if(u>=n){
//         return;
//     }
//     vis[u]=true;
//     for(int i=u+1;i<n;i++)
//     {
//         if(!vis[i]){
//             if((su+vc[i])<=(sum/2)){
//                 su+=vc[i];
//                 dfs(i);
//             }
//         }
//     }
//     su-=vc[u];
//     vis[u]=false;
// }
// int main() {
//     memset(vis,false,sizeof vis);
//     cin >> n;
//     for(int i=0;i<n;i++){
//         cin >> vc[i];
//         sum+=vc[i];
//     }
//     if(sum%2!=0){
//         cout << "false" << endl;
//     }
//     else{
//         su+=vc[0];
//         dfs(0);
//         if(viss==true){
//             cout << "true";
//         }
//         else{
//             cout << "false";
//         }
//     }
//     return 0;
// }

#include <iostream>
#include <algorithm>
#include <vector>
#include <cstring>
using namespace std;
vector<int> vc(520);
int n;
int sum = 0;
int su = 0;
bool vis[520];
bool viss;
void dfs(int u) {
   if (su == (sum / 2)) {
       viss = true;
       return;
   }
   if (u >= n) {
       return;
   }
   vis[u] = true;
   for (int i = u + 1; i < n; i++) {
       if (!vis[i]) {
           if ((su + vc[i]) <= (sum / 2)) {
               su += vc[i];
               dfs(i);
           }
       }
   }
   su -= vc[u];
   vis[u] = false;
}
int main() {
   memset(vis, false, sizeof vis);
   cin >> n;
   for (int i = 0; i < n; i++) {
       cin >> vc[i];
       sum += vc[i];
   }
   if (sum % 2 != 0) {
       cout << "false" << endl;
   }
   else {
       su += vc[0];
       dfs(0);
       if (viss == true) {
           cout << "true";
       }
       else {
           cout << "false";
       }
   }
   return 0;
}